<?


abstract class ViewBase extends CoderBase 
{
	/**
	 * 初始化相关的 MVC 对象
	 * 
	 * @access	public
	 * @return	void
	 */
	public function Initialize(ViewDoc $aDoc)
	{		
		// 子控件 控制器 ::::
		
		// 子UI控件 控制器
		$aSubDoc = $aDoc->GetUICtrlChildren() ;
		JCAT_ASSERT::ASSERT_INSTANCE($aSubDoc,'UICtrlContainerDoc') ;
		$aSubController = new UICtrlContainer($this,$aSubDoc) ;
		$this->AddController($aSubController,'UICtrlContainer') ;
		
		// 子视图 控制器
		$aSubDoc = $aDoc->GetObjectChildrenDoc() ;
		JCAT_ASSERT::ASSERT_INSTANCE($aSubDoc,'JCATMVCObjectContainerDoc') ;
		$aSubController = new JCATMVCObjectContainer($this,$aSubDoc) ;
		$this->AddController($aSubController,'ViewContainer') ;
		
		
		// 子视图
		$aView = JCAT_View::GetViewByGlobalName('ViewBaseView') ;
		$aView->SetDocument($aDoc) ;
		
		// 父类
		parent::Initialize($aDoc) ;
	}


	/**
	 * what's this
	 * 
	 * @access	public
	 * @return	void
	 */
	public function SetPath( $sPath )
	{
		$aView = JCAT_View::GetViewByGlobalName('ViewBaseView') ;
		JCAT_ASSERT::ASSERT_INSTANCE($aView,'ViewBaseView') ;
		
		$aView->SetPath( $sPath ) ;
	}

	/**
	 * what's this
	 * 
	 * @access	public
	 * @return	void
	 */
	public function GetPath()
	{
		$aView = JCAT_View::GetViewByGlobalName('ViewBaseView') ;
		JCAT_ASSERT::ASSERT_INSTANCE($aView,'ViewBaseView') ;
		
		return $aView->GetUICtrlExchangeData('ViewPath') ;
	}
	
	/**
	 * 
	 *
	 * @access	public
	 * @return	void
	 */
	public function MainRun($arrArgv=array())
	{		
		// 移交给父类
		parent::MainRun(& $arrArgv) ;
		
		// 载入 所有 子控件		 
		$aSubController = $this->GetController('UICtrlContainer') ;
		$aSubController->MainRun(& $arrArgv) ;
		
		$aSubController = $this->GetController('ViewContainer') ;
		$aSubController->MainRun(& $arrArgv) ;
	}


}

?>